<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>By the way, what are the differences between signals
and events?</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="GTK+ FAQ"
HREF="book1.html"><LINK
REL="UP"
TITLE="Development with GTK+: general questions"
HREF="c475.html"><LINK
REL="PREVIOUS"
TITLE="How do I catch a double click event? [GTK 2.x]"
HREF="x544.html"><LINK
REL="NEXT"
TITLE="Data I pass to the delete_event (or other event)
handler gets corrupted."
HREF="x566.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>GTK+ FAQ</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x544.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Development with GTK+: general questions</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x566.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN555"
>By the way, what are the differences between signals
and events?</A
></H1
><P
>First of all, Havoc Pennington gives a rather complete
description of the differences between events and signals in
his free book (two chapters can be found at <A
HREF="http://www106.pair.com/rhp/sample_chapters.html"
TARGET="_top"
>http://www106.pair.com/rhp/sample_chapters.html</A
>).</P
><P
>Moreover, Havoc posted this to the <TT
CLASS="LITERAL"
>gtk-list</TT
>
<SPAN
CLASS="QUOTE"
>"Events are a stream of messages received from the X
server. They drive the Gtk main loop; which more or less
amounts to "wait for events, process them" (not exactly, it
is really more general than that and can wait on many
different input streams at once). Events are a Gdk/Xlib
concept."</SPAN
></P
><P
><SPAN
CLASS="QUOTE"
>"Signals are a feature of GtkObject and its subclasses. They
have nothing to do with any input stream; really a signal is just a way
to keep a list of callbacks around and invoke them ("emit" the
signal). There are lots of details and extra features of
course. Signals are emitted by object instances, and are entirely
unrelated to the Gtk main loop.  Conventionally, signals are emitted
"when something changes" about the object emitting the
signal."</SPAN
></P
><P
><SPAN
CLASS="QUOTE"
>"Signals and events only come together because GtkWidget
happens to emit signals when it gets events. This is purely a
convenience, so you can connect callbacks to be invoked when a
particular widget receives a particular event. There is nothing about
this that makes signals and events inherently related concepts, any more
than emitting a signal when you click a button makes button clicking and
signals related concepts."</SPAN
></P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x544.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x566.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>How do I catch a double click event? <I
CLASS="EMPHASIS"
>[GTK 2.x]</I
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c475.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Data I pass to the <TT
CLASS="LITERAL"
>delete_event</TT
> (or other event)
handler gets corrupted.</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>